package com.mysteel.product.feign;

import com.mysteel.common.to.SkuReductionTo;
import com.mysteel.common.to.SpuBoundTo;
import com.mysteel.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * ProjectName: mail
 * ClassName: CouponFeignService
 * Description:
 * date: 2021/01/13/013 9:41
 *
 * @author xiaochao
 */
@FeignClient("coupon")
public interface CouponFeignService {

    /**
     * 调用远程服务保存商品购买所得积分
     * [问]：本地发送（SpuBoundTo）和远程接收（SpuBoundsEntity）数据的对象不同，能否正确兼容并传输数据？
     * [答]：如果两者之间的需要传输和接收数据的属性名相同，则能兼容并正确传输数据，因为spring cloud在远程调用的过程中使用了@RequestBody注解，
     *      传输过程中所用的数据模型是json，只要属性名能对应，就能正确兼容并传输数据。
     * @param spuBoundTo
     * @return
     */
    @PostMapping("/coupon/spubounds/save")
    R saveSpuBounds(@RequestBody SpuBoundTo spuBoundTo);

    @PostMapping("/coupon/skufullreduction/saveInfo")
    R saveSkuReduction(@RequestBody SkuReductionTo skuReductionTo);
}
